//服务器端
//引入第三方包 express
let express = require('express')

//实例化express
let app = express()

//设置静态托管文件夹
//app.use()注册中间件
//express.static()  express内置的一个静态资源托管的中间件
app.use(express.static('static'))

//在所有接口前  处理post请求参数的中间件
app.use(express.json())
app.use(express.urlencoded({ extended: false }))

//定义返回给客户端的数据
var arr = [
    { email: 'a.vgsgqr@oyivvykhkb.nl', name: '张伟', phone: '12784681231', pass: '1234', ingroup: '编辑组', isadmin: true, status: true },
    { email: 'a.vgsgqr@oyivvykhkb.nl', name: '李煜', phone: '12788981231', pass: '1234', ingroup: '编辑组', isadmin: true, status: true },
    { email: 'a.vgsgqr@oyivvykhkb.nl', name: '蔡徐坤', phone: '12798581231', pass: '1234', ingroup: '编辑组', isadmin: true, status: false },
]

//分页（查询）接口
//设置接口 //地址都是以斜杠开头 //箭头函数是请求处理器
app.get('/user/list', (req, res) => {


    //req 请求对象，包含了和本次请求相关的所有信息（请求地址，请求方式，携带的参数）

    //res 响应对象，可以借助res向客户端返回信息（字符串，json格式数据，网页）

    //获取get类型请求的参数：req.query
    var { page, count } = req.query
    //分页
    //slice(0 , 10) 取前10个
    //slice(10 , 20) 取第11-20个
    //slice(20 , 30) 取第21-30个
    let newarr = arr.slice((page - 1) * count, page * count)
    //返回数据
    res.send({ code: 200, msg: '请求成功', list: newarr })
})

//模糊搜索接口
app.get('/user/search', (req, res) => {
    //接收参数
    let { searchkey } = req.query
    //根据参数，从用户的name属性中进行过滤
    let newarr = arr.filter((item)=>{
        //indexof()返回的是下标，没找到返回-1
        // return item.name.indexOf(searchkey) != -1
        //includes() 返回true/false
        return item.name.includes(searchkey)
    })
    //返回数据
    res.send({ code:200,msg:'查询成功',list:newarr })
})


//登录接口
app.post('/user/login', (req, res) => {

    //想要接收post类型请求的参数，必须提前设置能能解析post请求参数的中间件 express.json 和 express.uurlencoded
    let { phone, pass } = req.body
    console.log(phone , pass);
    //用来自客户端的数据做判断，判断是否在服务端用户列表中
    let i = arr.findIndex((item , index)=>{
        return item.phone == phone && item.pass == pass
    })

    //如果i不是-1 ， 说明来自客户端的数据是合法的
    if( i != -1 ){
        //登陆成功时可以一并返回 登陆成功的用户信息以及登录令牌
        res.send({ code: 200, msg: '登陆成功！' , usaeinfo:arr[i] , token:''})
    }
    else{
        res.send({ code: 400, msg: '登陆失败！' })
    }

})

//设置监听
app.listen(8080, () => {
    console.log('服务端运行在：http://localhost:8080');
})